<?php

class FormataDados {

    function __construct() {
        
    }

    public function FormataCep($cep) {
        $cep = $this->getSoNumeros($cep);
        if (empty($cep)) {
            return;
        } else {
            $cep = str_pad($cep, 8, "0", STR_PAD_LEFT);
            return substr($cep, 0, 5) . "-" . substr($cep, 5, 3);
        }
    }

    public function getMes($mes) {
        $arrayMes['01'] = "janeiro";
        $arrayMes['02'] = "fevereiro";
        $arrayMes['03'] = "março";
        $arrayMes['04'] = "abril";
        $arrayMes['05'] = "maio";
        $arrayMes['06'] = "junho";
        $arrayMes['07'] = "julho";
        $arrayMes['08'] = "agosto";
        $arrayMes['09'] = "setembro";
        $arrayMes['10'] = "outubro";
        $arrayMes['11'] = "novembro";
        $arrayMes['12'] = "dezembro";
        return $arrayMes[$mes];
    }

    public function getIdEstado($sigla) {
        $estados = array(
            1 => 'AC', 2 => 'AL', 3 => 'AM',
            4 => 'AP', 5 => 'BA', 6 => 'CE',
            7 => 'DF', 8 => 'ES', 9 => 'GO',
            10 => 'MA', 11 => 'MG', 12 => 'MT',
            13 => 'MS', 14 => 'PA', 15 => 'PB',
            16 => 'PE', 17 => 'PI', 18 => 'PR',
            19 => 'RJ', 20 => 'RN', 21 => 'RO',
            22 => 'RR', 23 => 'RS', 24 => 'SC',
            25 => 'SE', 26 => 'SP', 27 => 'TO',
        );
        $retorno = array_search($sigla, $estados);
        return ($retorno === false) ? null : $retorno;
    }

    public function FormataTelefone($telefone) {
        $telefone = $this->getSoNumeros($telefone);
        if (!empty($telefone)) {
            return '(' . substr($telefone, 0, 2) . ")" . substr($telefone, 2, 4) . '-' . substr($telefone, 6, 4);
        }
    }

    public function FormataCnpj($cnpj) {
        $cnpj = $this->getSoNumeros($cnpj);
        if (!empty($cnpj)) {
            $cnpj = str_pad($cnpj, 14, "0", STR_PAD_LEFT);
            return substr($cnpj, 0, 2) . "." . substr($cnpj, 2, 3) . "." . substr($cnpj, 5, 3) . "/" . substr($cnpj, 8, 4) . "-" . substr($cnpj, 12, 2);
        }
    }

    public function FormataCpf($cpf) {
        $cpf = $this->getSoNumeros($cpf);
        if (!empty($cpf)) {
            $cpf = str_pad($cpf, 11, "0", STR_PAD_LEFT);

            return substr($cpf, 0, 3) . "." . substr($cpf, 3, 3) . "." . substr($cpf, 6, 3) . "-" . substr($cpf, 9, 2);
        }
    }

    public function FormataNascimento($nascimento) {
        $nascimento = $this->getSoNumeros($nascimento);
        if (!empty($nascimento)) {
            $nascimento = str_pad($nascimento, 8, "0", STR_PAD_LEFT);

            return substr($nascimento, 4, 4) . "-" . substr($nascimento, 2, 2) . "-" . substr($nascimento, 0, 2);
        }
    }

    public function getSoNumeros($valor) {
        return preg_replace('/[^0-9]/', '', $valor);
    }

    public function VerificaRespostas($idPergunta, $resposta, $pdo) {
        // verifica se a pergunta existe...
        $resposta = str_replace("'", "", $resposta);
        $respostaObj = new SecretariaRespostaExecuta($pdo, false);
        $criterioPergunta = array();
        $criterioPergunta[] = array('resposta', '=', $resposta);
        $criterioPergunta[] = array('id_pergunta', '=', $idPergunta);
        $consulta = $respostaObj->listar(array('id_resposta'), $criterioPergunta);
        if ($consulta->rowCount()) {
            $dados = $consulta->fetch(PDO::FETCH_ASSOC);
            return $dados['id_resposta'];
        } else {
            $dadosResposta = array(
                'id_pergunta' => $idPergunta,
                'resposta' => $resposta
            );
            $respostaObj->inserir($dadosResposta);
            return $respostaObj->getUltimoId();
        }
    }

    public static function valorPorExtenso($valor, $isMoney = true, $isMetrosQuadrados = false) {
        if($isMoney){
            $singular = array("centavo", "real", "mil", "milhão", "bilhão", "trilhão", "quatrilhão");
            $plural = array("centavos", "reais", "mil", "milhões", "bilhões", "trilhões", "quatrilhões");
        }
        if($isMetrosQuadrados){
            $singular = array("", "metro quadrado", "mil", "milhão", "bilhão", "trilhão", "quatrilhão");
            $plural = array("", "metros quadrados", "mil", "milhões", "bilhões", "trilhões", "quatrilhões");
        }

        $c = array("", "cem", "duzentos", "trezentos", "quatrocentos",
            "quinhentos", "seiscentos", "setecentos", "oitocentos", "novecentos");
        $d = array("", "dez", "vinte", "trinta", "quarenta", "cinquenta",
            "sessenta", "setenta", "oitenta", "noventa");
        $d10 = array("dez", "onze", "doze", "treze", "quatorze", "quinze",
            "dezesseis", "dezesete", "dezoito", "dezenove");
        $u = array("", "um", "dois", "três", "quatro", "cinco", "seis",
            "sete", "oito", "nove");

        $z = 0;

        $valor = number_format($valor, 2, ".", ".");
        $inteiro = explode(".", $valor);
        for ($i = 0; $i < count($inteiro); $i++)
            for ($ii = strlen($inteiro[$i]); $ii < 3; $ii++)
                $inteiro[$i] = "0" . $inteiro[$i];

        $fim = count($inteiro) - ($inteiro[count($inteiro) - 1] > 0 ? 1 : 2);
        $rt = '';
        for ($i = 0; $i < count($inteiro); $i++) {
            $valor = $inteiro[$i];
            $rc = (($valor > 100) && ($valor < 200)) ? "cento" : $c[$valor[0]];
            $rd = ($valor[1] < 2) ? "" : $d[$valor[1]];
            $ru = ($valor > 0) ? (($valor[1] == 1) ? $d10[$valor[2]] : $u[$valor[2]]) : "";

            $r = $rc . (($rc && ($rd || $ru)) ? " e " : "") . $rd . (($rd &&
                    $ru) ? " e " : "") . $ru;
            $t = count($inteiro) - 1 - $i;
            $r .= $r ? " " . ($valor > 1 ? $plural[$t] : $singular[$t]) : "";
            if ($valor == "000"
            )
                $z++; elseif ($z > 0)
                $z--;
            if (($t == 1) && ($z > 0) && ($inteiro[0] > 0))
                $r .= ( ($z > 1) ? " de " :
                                " ") . $plural[$t];
            if ($r)
                $rt = $rt . ((($i > 0) && ($i <= $fim) &&
                        ($inteiro[0] > 0) && ($z < 1)) ? ( ($i < $fim) ? ", " : " e ") : "") . $r;
        }

        return($rt ? $rt : "zero");
    }

    public static function print_r2($var){
        echo '<pre>';
        print_r($var);
        echo '</pre>';
    }
    
    
    public function FormataDataReverso($valor)
    {
        if(ereg('^[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9]$', $valor))
        {
            $temp = explode('/', $valor);
            return $temp[2].'-'.$temp[1].'-'.$temp[0];
        }
        else
            return null;
    }
}

?>